In rational protein design, detailed knowledge of structure and function of a protein of interest is used to engineer a mutant form of the protein. However, rational mutagenesis methods are generally unsuccessful due to the fact that complex, non-intuitive interactions often govern protein structure and function. Accordingly, it is desirable to develop novel methods and compositions for protein engineering.